package cn.edu.zhku.mapper;

import cn.edu.zhku.dto.TaskDto;
import cn.edu.zhku.dto.UserDto;
import cn.edu.zhku.pojo.Group;
import cn.edu.zhku.pojo.Task;
import cn.edu.zhku.pojo.User;

import java.util.Date;
import java.util.List;

public interface GroupMapper {

    void insertOne(Group group);

    void insertOne2UserGroup(Integer userId, String inviteCode, Date joinTime);

    void updateOne(Group group);

    void deleteGroupBatch(List<Integer> groupIds);

    void deleteUserGroupBatch(List<Integer> groupIds);

    void deleteTaskGroupBatch(List<Integer> groupIds);

    void deleteUserBatch(Integer groupId, List<Integer> userIds);

    void deleteTaskBatch(Integer groupId, List<Integer> taskIds);

    Group selectById(Integer groupId);

    Integer selectGroupNumByGroupIdBatch(List<Integer> groupIds);

    Group selectByInviteCode(String inviteCode);

    Integer selectGroupNumByStuIdAndInviteCode(Integer userId, String inviteCode);

    Integer selectGroupUserNumByGroupIdAndUserIdBatch(Integer groupId, List<Integer> userIds);

    Integer selectGroupTaskNumByGroupIdAndTaskIdBatch(Integer groupId, List<Integer> taskIds);

    List<Group> selectGroupTea(Group group);

    List<Group> selectGroupStu(Group group);

    List<User> selectGroupUser(UserDto userDto);

    List<Task> selectGroupTaskTea(TaskDto taskDto);

    List<Task> selectGroupTaskStu(TaskDto taskDto);

    Integer selectGroupUserNumByGroupId(Integer groupId);

    Integer selectGroupTaskNumByGroupId(Integer groupId);

    Integer selectGroupTaskFormNumByGroupIdAndTaskId(Integer groupId, Integer taskId);
}
